package com.yhp.service.impl;

import com.yhp.bean.Menu;
import com.yhp.dao.MenuDao;
import com.yhp.dao.MiddleDao;
import com.yhp.dao.impl.MenuDaoImpl;
import com.yhp.dao.impl.MiddleDaoImpl;
import com.yhp.service.MenuService;

import java.util.ArrayList;
import java.util.List;

public class MenuServiceImpl implements MenuService {
    MenuDao menuDao = new MenuDaoImpl();
    MiddleDao middleDao = new MiddleDaoImpl();
    @Override
    public List<Menu> getMenuList() {
        List<Menu> menuList = menuDao.getMenuList();//未分级的集合
        List<Menu> success = new ArrayList<>();//分级后的集合
        //循环未分级集合
        for (Menu menu:menuList) {
            //当upid等于0的时候
            if(menu.getUpMenuId()==0){
                //创建一个集合  这个集合就相当于  menu实体类里面的 success集合   相当于子集合/二级集合 *的载体*
                List<Menu> lowList = new ArrayList<>();
                //继续循环未分级的集合
                for (Menu low : menuList) {
                    //当这次循环的upid等于  外循环的 菜单id的时候
                    if(menu.getMenuId()==low.getUpMenuId()){
                        //把这个对象存进子集合
                        lowList.add(low);
                    }
                }
                //等吧要存入的对象都存入载体之后   把载体合存入   子集合
                menu.setSuccessList(lowList);
                //然后再把menu对象  存入  区别好了的集合   最后  返回 分号层级的集合
                success.add(menu);
            }
        }

        return success;
    }

    @Override
    public List<Menu> getMenu(int index, int pageSize) {
        return menuDao.getMenu(index,pageSize);
    }

    @Override
    public int total() {
        return menuDao.total();
    }


    @Override
    public int addMenu(Menu menu) {
        return menuDao.addMenu(menu);
    }

    @Override
    public int deleteMenu(int id) {
        int a = 0;
        try {
            a = 0;
            int i = menuDao.deleteMenu(id);
            int i1 = middleDao.deleteMiddleMenu(id);
            a=1;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return a;
    }

    @Override
    public Menu findById(int id) {
        return menuDao.findById(id);
    }

    @Override
    public int updateMenu(Menu menu) {
        int i = 0;
        try {
            i = menuDao.updateMenu(menu);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return i;
    }
}
